import request from '../index';

let api_name="/user";

/**
 * 
 */
  
/**
 * 上传单文件
 * @param {*} url //上传的文件路径
 * @param {*} file //上传的文件对象 二进制
 * @param {*} formData 上传是一个文件处理对象new formData()
 * @returns 
 */
// 封装单个文件上传  
function uploadSingleFile(url: string, file: string | Blob, formData = new FormData()) {  
  // 假设file是一个File对象  
  formData.append('file', file); // 这里的'file'是后端接收的字段名，根据实际情况修改  
  
  return request.post(url, formData, {  
    headers: {  
      'Content-Type': 'multipart/form-data',  
      // 其他需要的headers  
    },  
  });  
}  
  
/**
 * 可以批量上传文件文件
 * @param {*} url 上传文件的路径
 * @param {*} files 上传多个文件数组
 * @param {*} formData 上传是一个文件处理对象new formData()
 * @returns 
 */
// 封装批量文件上传  
function uploadMultipleFiles(url: string, files: any[], formData = new FormData()) {  
  files.forEach((file, index) => {  
    // 假设你希望每个文件都使用不同的字段名（虽然通常后端会期望相同的字段名来处理文件数组）  
    // 这里简单起见，我们使用相同的字段名'file'，后端应配置为接收文件数组  
    formData.append(`file${index}`, file); // 实际应用中，可能只需要formData.append('file', file);  
    // 或者，如果你后端期望的是一个名为'files'的数组字段  
    // formData.append('files[]', file);  
  });  
  
  return request.post(url, formData, {  
    headers: {  
      'Content-Type': 'multipart/form-data',  
      // 其他需要的headers  
    },  
  });  
}  
  
/**
 * 上传多个文件，但是是一个文件数组
 * @param {*} url 上传的路径
 * @param {*} files 单个文件数组
 * @returns 
 */
// 如果你选择使用'files[]'作为字段名，并且后端期望接收一个名为'files'的数组  
function uploadMultipleFilesOptimized(url: any, files: any[]) {  
  const formData = new FormData();  
  files.forEach(file => formData.append('files[]', file));  
  return request.post(url, formData, {  
    headers: {  
      'Content-Type': 'multipart/form-data',  
    },  
  });  
}  

export { uploadSingleFile,uploadMultipleFiles,uploadMultipleFilesOptimized };